Field of the Invention
The present invention is related to computing systems and more particularly to computing systems including multiple requestors for a shared resource.
Description of the Related Art
In general, in computing systems that include multiple nodes (e.g., central processing unit (CPU), processor, graphics processing unit (GPU), coprocessor, Input/Output node, or other node) and a shared resource (e.g., memory system), when sending requests from an individual node to the shared resource, the requests must often be first routed through a network (e.g., a network-on-a-chip (NoC)). Memory requests that target the same page or row of a memory system (e.g., dynamic random access memory (DRAM)) during a period of time may be serviced more efficiently by the memory subsystem due to a reduced number of bank activation and precharge commands needed to service such memory requests, which result in page or row buffer hits, respectively. However, typical mechanisms for injecting memory requests into the network tend to be conservative. For example, a node may assume that each memory request will induce a bank conflict and may allocate bandwidth and adjust injection rates accordingly. Although those mechanisms may maintain quality-of-service constraints, such conservative injection policies may substantially underutilize the network and available memory bandwidth. Accordingly, improved techniques for injecting resource requests into a network are desired.